home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / commands / echo.c < prev    next >
C/C++ Source or Header  |  1990-07-15  |  699b  |  44 lines

  1. /* echo - echo arguments    Author: Andy Tanenbaum */
  2.  
  3. #define SIZE 1024
  4. char buf[SIZE];
  5. int count;
  6. main(argc, argv)
  7. int argc;
  8. char *argv[];
  9. {
  10.   register int i, nflag;
  11.  
  12.   nflag = 0;
  13.   if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'n') {
  14.     nflag++;
  15.     argc--;
  16.     argv++;
  17.   }
  18.   for (i = 1; i < argc; i++) {
  19.     collect(argv[i]);
  20.     if (i < argc - 1) collect(" ");
  21.   }
  22.  
  23.   if (nflag == 0) collect("\n");
  24.  
  25.   /* Print accumulated output. */
  26.   if (count > 0) write(1, buf, count);
  27.   exit(0);
  28. }
  29.  
  30. collect(s)
  31. char *s;
  32. {
  33. /* Collect characters.  For efficiency, write them in large chunks. */
  34.   char c;
  35.  
  36.   while ((c = *s++) != 0) {
  37.     if (count == SIZE) {
  38.         write(1, buf, count);
  39.         count = 0;
  40.     }
  41.     buf[count++] = c;
  42.   }
  43. }
  44.